#include "tensor/seq_tensor.h"

extern "C" txdnnStatus_t txdnnCreateSeqDataDescriptor(txdnnSeqDataDescriptor_t *seqDataDesc) {

  return txdnn::TxdnnTry([&] {
    // TODO
  });
}

extern "C" txdnnStatus_t txdnnDestroySeqDataDescriptor(txdnnSeqDataDescriptor_t seqDataDesc) {

  return txdnn::TxdnnTry([&] {
    // TODO
  });
}

extern "C" txdnnStatus_t txdnnSetSeqDataDescriptor(txdnnSeqDataDescriptor_t seqDataDesc,
                                        txdnnDataType_t dataType,
                                        int nbDims,
                                        const int dimA[],
                                        const txdnnSeqDataAxis_t axes[],
                                        size_t seqLengthArraySize,
                                        const int seqLengthArray[],
                                        void *paddingFill) {

  return txdnn::TxdnnTry([&] {
    // TODO
  });
}

extern "C" txdnnStatus_t txdnnGetSeqDataDescriptor(const txdnnSeqDataDescriptor_t seqDataDesc,
                                        txdnnDataType_t *dataType,
                                        int *nbDims,
                                        int nbDimsRequested,
                                        int dimA[],
                                        txdnnSeqDataAxis_t axes[],
                                        size_t *seqLengthArraySize,
                                        size_t seqLengthSizeRequested,
                                        int seqLengthArray[],
                                        void *paddingFill) {

  return txdnn::TxdnnTry([&] {
    // TODO
  });
}